/**
 * 股票数据处理工具函数
 */
import $ from "jquery";

/**
 * 处理金额显示格式化
 * @param {number} amount - 金额数值
 * @returns {string} 格式化后的金额
 */
export function formatMoney(amount) {
  if (!amount) return '0';
  
  if (amount < 1000) {
    return (amount / 100).toFixed(1) + '百';
  } else if (amount < 10000) {
    return (amount / 1000).toFixed(1) + '千';
  } else if (amount < 100000) {
    return (amount / 10000).toFixed(1) + '万';
  }
  return amount.toString();
}

/**
 * 处理股票状态
 * @param {number} status - 状态码
 * @returns {string} 状态描述
 */
export function getStockStatus(status) {
  const STATUS_MAP = {
    0: '待定',
    1: '横盘中0.5到-1',
    2: '盈利',
    3: '亏损'
  };
  return STATUS_MAP[status] || '未知状态';
}

/**
 * 获取Ajax数据
 * @param {string} url - 请求URL
 * @returns {Object} 响应数据
 */
export function fetchStockData(url) {
  if (!url) return null;
  try {
    const response = $.ajax({
      url,
      async: false
    });
    return response.responseJSON.data;
  } catch (error) {
    console.error('获取数据失败:', error);
    return null;
  }
}

/**
 * 处理月度数据
 * @param {Object} data - 原始数据
 * @returns {Array} 处理后的月度数据
 */
export function processMonthlyData(data) {
  if (!data?.time?.length) return [];
  
  const result = [];
  let currentYear = null;
  let currentItems = [];
  let currentTimes = [];

  data.time.forEach((time, index) => {
    const year = time.slice(0, 4);
    
    if (year === currentYear) {
      currentItems.push(data.array[index]);
      currentTimes.push(time.slice(0, 7));
    } else {
      if (currentYear) {
        result.push({
          year: currentYear,
          data: formatMonthlyData(currentItems, currentTimes),
          times: currentTimes
        });
      }
      currentYear = year;
      currentItems = [data.array[index]];
      currentTimes = [time.slice(0, 7)];
    }
  });

  if (currentItems.length) {
    result.push({
      year: currentYear,
      data: formatMonthlyData(currentItems, currentTimes),
      times: currentTimes
    });
  }

  return result;
}

/**
 * 格式化月度数据
 * @param {Array} data - 数据数组
 * @param {Array} times - 时间数组
 * @returns {Array} 格式化后的数据
 */
function formatMonthlyData(data, times) {
  const result = new Array(12).fill('--');
  
  times.forEach((time, index) => {
    const month = parseInt(time.slice(5, 7)) - 1;
    if (month >= 0 && month < 12) {
      result[month] = data[index];
    }
  });
  
  return result;
}

/**
 * 股票相关工具函数
 */

/**
 * 股票相关工具函数
 */

/**
 * 计算止损点
 * @param {Object} data - 股票数据
 * @returns {Object} 止损计算结果
 */
export function calculateStopLoss(data) {
  if (!data) return null;
  
  const { max_data_num, min_data_num, this_data_num } = data;
  const lastPrice = this_data_num[this_data_num.length - 1];
  
  return {
    currentPrice: lastPrice,
    stopLoss: Math.min(...min_data_num.slice(-30)),
    resistance: Math.max(...max_data_num.slice(-30))
  };
}

/**
 * 计算主力资金占比
 * @param {Object} data - 资金数据
 * @returns {number} 主力资金占比
 */
export function calculateMainForce(data) {
  if (!data) return 0;
  
  const { mainForce, total } = data;
  return (mainForce / total * 100).toFixed(2);
}

/**
 * 格式化日期
 * @param {string} date - 日期字符串
 * @returns {string} 格式化后的日期
 */
export function formatDate(date) {
  if (!date) return '';
  return date.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3');
} 